package com.ssy.lingxi.order.model.vo.basic.request;

import com.ssy.lingxi.order.handler.annotation.DateStringFormatAnnotation;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * Srm订单收货人信息接口参数
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-18
 */
public class SrmOrderConsigneeVO implements Serializable {
    private static final long serialVersionUID = -1696285525243419108L;

    /**
     * 交付日期，格式为yyyy-MM-dd
     */
    @NotBlank(message = "交付日期不能为空")
    @DateStringFormatAnnotation(message = "交付日期格式错误")
    private String deliverDate;

    /**
     * 收货人Id
     */
    @NotNull(message = "收货地址的收货人Id要大于0")
    @Positive(message = "收货地址的收货人Id要大于0")
    private Long consigneeId;

    /**
     * 收货人姓名
     */
    @NotBlank(message = "收货地址的收货人姓名不能为空")
    @Size(max = 50, message = "收货地址的收货人姓名最长50个字符")
    private String consignee;

    /**
     * 省编码
     */
    @NotBlank(message = "收货地址的省编码不能为空")
    private String provinceCode;

    /**
     * 市编码
     */
    @NotBlank(message = "收货地址的市编码不能为空")
    private String cityCode;

    /**
     * 区编码
     */
    private String districtCode;

    /**
     * 详细地址
     */
    @NotBlank(message = "收货地址的详细地址不能为空")
    @Size(max = 200, message = "收货地址的详细地址最长200个字符")
    private String address;

    /**
     * 邮政编码
     */
    @Size(max = 20, message = "收货地址的邮政编码最长20个字符")
    private String postalCode;

    /**
     * 国家编码（手机号码前缀）
     */
    @NotBlank(message = "收货地址的国家编码不能为空")
    @Size(max = 10, message = "收货地址的国家编码最长10个字符")
    private String countryCode;

    /**
     * 手机号码
     */
    @NotBlank(message = "收货地址的手机号码不能为空")
    @Size(max = 20, message = "收货地址的手机号码最长20个字符")
    private String phone;

    /**
     * 固定电话号码
     */
    @Size(max = 20, message = "收货地址的固话号码最长20个字符")
    private String telephone;

    /**
     * 是否默认，true-是，false-否
     */
    private Boolean defaultConsignee;

    public Long getConsigneeId() {
        return consigneeId;
    }

    public void setConsigneeId(Long consigneeId) {
        this.consigneeId = consigneeId;
    }

    public String getConsignee() {
        return consignee;
    }

    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }

    public String getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }

    public String getCityCode() {
        return cityCode;
    }

    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }

    public String getDistrictCode() {
        return districtCode;
    }

    public void setDistrictCode(String districtCode) {
        this.districtCode = districtCode;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public Boolean getDefaultConsignee() {
        return defaultConsignee;
    }

    public void setDefaultConsignee(Boolean defaultConsignee) {
        this.defaultConsignee = defaultConsignee;
    }
}
